﻿/*
 * Script: "mapa_consultar_metro.js"
 * Copyright 2011 SISVOX.
 *
 * Licenciado bajo SISVOX, Version 1.0 (la "Licencia");
 * El codigo presente que compone este Software es propiedad unica y
 * exclusivamente de SISVOX, por lo tanto, usted no podrá utilizar este
 * archivo excepto en cumplimiento de la Licencia ofrecida por SISVOX.
 * Usted puede obtener una copia de la Licencia en:
 *
 *      Soluciones Integrales de Software Vox (SISVOX)
 *                 http://www.sisvox.com
 *
 *     - Carlos Calvo      <ccalvo@sisvox.com>
 *     - Andres Hernandez  <ahernandez@sisvox.com>
 *
 * A menos que sea requerido por la ley aplicable o se acuerde por escrito,
 * el software distribuido bajo la licencia se distribuye "TAL CUAL", CON
 * LAS GARANTIAS Y CONDICIONES expresadas en la "Licencia".
 */
 
 
// Variables donde se guardan los datos de los resultados a mostrar

var map				= null;
var icono 			= null;
var icono_est		= null;
var infoBubbleTurnob 		= null;

var coord_x 				= null;
var coord_y 				= null;
var zoom 					= null;

// Lista de Tramos del Metro
var lista_coord_x_tra 		= null;
var lista_coord_y_tra 		= null;
var lista_id_linea_tra 		= null;
var lista_corte_tra 		= null;
var lista_id_status_tra 	= null;

// Lista de Estaciones del Metro
var lista_id_estacion 		= null;
var lista_coord_x_est 		= null;
var lista_coord_y_est 		= null;
var lista_nombre_est 		= null;
var lista_descripcion_est 	= null;
var lista_id_tipo_sis_est 	= null;
var lista_id_linea_est 		= null;
var lista_transferencia_est = null;
var lista_id_status_est 	= null;
var lista_imagen_est 		= null;
var lista_hora_ape_est 		= null;
var lista_hora_cie_est 		= null;
var lista_observaciones_est = null;

// Lista de Tipos de Sistemas
var lista_tipo_sis_id 		= null;
var lista_tipo_sis_nombre 	= null;
var nombre_tipo_sis 		= new Array();

// Datos de las Lineas del MetroBus
var lista_id_linea_met 		= null;
var lista_nombre_met 		= null;
var lista_color_met 		= null;
var nombre_met 				= new Array();
var color_met 				= new Array();

// Datos de las Lineas del MetroBus
var lista_id_linea_bus 		= null;
var lista_nro_linea_bus 	= null;
var lista_id_estacion_bus 	= null;
var lista_id_tipo_rut_bus 	= null;
var lista_nombre_bus 		= null;


// =================================================================================================================
// ============================== MAPA DE CONSULTA DE RUTA DE LA LINEA DE AUTOBUSES ================================
// =================================================================================================================

function mapa_consultar_metro( overviewMap ) {					
	
	// Inicializamos los Datos a mostrar
	inicializar_datos();
	
	// Creamos el Mapa
	var centerPoint = new google.maps.LatLng( parseFloat(coord_x).toFixed(8), parseFloat(coord_y).toFixed(8) );
	var myOptions = {
		zoom: parseInt(zoom),
		zoomControlOptions: {
			style: google.maps.ZoomControlStyle.LARGE
		},
		center: centerPoint,
		panControl: true,
		mapTypeControl: false,
		scaleControl: true,
		streetViewControl: false,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		overviewMapControl: overviewMap,
		overviewMapControlOptions: {
    		opened: overviewMap
  		}
	} 
	map = new google.maps.Map(document.getElementById("map"), myOptions);
	
	// Pintamos los Tramos del Sistema Metro
	pintar_tramo();
	
	// Pintamos las Estaciones
	pintar_estacion();
}


// =================================================================================================================
// ======================================== INICIALIZAR LOS DATOS DEL MAPA =========================================
// =================================================================================================================

function inicializar_datos() {
	coord_x 					= $('#h_coord_x').val();
	coord_y 					= $('#h_coord_y').val();
	zoom 						= $('#h_zoom').val();
	
	
	// Datos de los Tramos del Metro
	var h_ls_coord_x_tra 		= $('#h_ls_coord_x_tra').val();
	lista_coord_x_tra 			= h_ls_coord_x_tra.split( "/*" );
	
	var h_ls_coord_y_tra 		= $('#h_ls_coord_y_tra').val();
	lista_coord_y_tra 			= h_ls_coord_y_tra.split( "/*" );
	
	var h_ls_id_linea_tra 		= $('#h_ls_id_linea_tra').val();
	lista_id_linea_tra 			= h_ls_id_linea_tra.split( "/*" );
	
	var h_ls_corte_tra 			= $('#h_ls_corte_tra').val();
	lista_corte_tra 			= h_ls_corte_tra.split( "/*" );
	
	var h_ls_id_status_tra 		= $('#h_ls_id_status_tra').val();
	lista_id_status_tra 		= h_ls_id_status_tra.split( "/*" );
	
	
	// Datos de las Estaciones del Metro
	var h_ls_id_estacion 		= $('#h_ls_id_estacion').val();
	lista_id_estacion			= h_ls_id_estacion.split( "/*" );
	
	var h_ls_coord_x_est 		= $('#h_ls_coord_x_est').val();
	lista_coord_x_est 			= h_ls_coord_x_est.split( "/*" );
	
	var h_ls_coord_y_est 		= $('#h_ls_coord_y_est').val();
	lista_coord_y_est 			= h_ls_coord_y_est.split( "/*" );
	
	var h_ls_id_tipo_sis_est 	= $('#h_ls_id_tipo_sis_est').val();
	lista_id_tipo_sis_est 		= h_ls_id_tipo_sis_est.split( "/*" );
	
	var h_ls_id_linea_est 		= $('#h_ls_id_linea_est').val();
	lista_id_linea_est 			= h_ls_id_linea_est.split( "/*" );
	
	var h_ls_nombre_est 		= $('#h_ls_nombre_est').val();
	lista_nombre_est 			= h_ls_nombre_est.split( "/*" );
	
	var h_ls_descripcion_est 	= $('#h_ls_descripcion_est').val();
	lista_descripcion_est 		= h_ls_descripcion_est.split( "/*" );
	
	var h_ls_transferencia_est 	= $('#h_ls_transferencia_est').val();
	lista_transferencia_est 	= h_ls_transferencia_est.split( "/*" );
	
	var h_ls_id_status_est 		= $('#h_ls_id_status_est').val();
	lista_id_status_est 		= h_ls_id_status_est.split( "/*" );
	
	var h_ls_imagen_est 		= $('#h_ls_imagen_est').val();
	lista_imagen_est 			= h_ls_imagen_est.split( "/*" );
	
	var h_ls_hora_ape_est 		= $('#h_ls_hora_ape_est').val();
	lista_hora_ape_est			= h_ls_hora_ape_est.split( "/*" );
	
	var h_ls_hora_cie_est 		= $('#h_ls_hora_cie_est').val();
	lista_hora_cie_est 			= h_ls_hora_cie_est.split( "/*" );
	
	var h_ls_observaciones_est 	= $('#h_ls_observaciones_est').val();
	lista_observaciones_est 	= h_ls_observaciones_est.split( "/*" );
	
	
	// Lista de Tipos de Sistemas
	var h_ls_tipo_sis_id 		= $('#h_ls_tipo_sis_id').val();
	lista_tipo_sis_id 			= h_ls_tipo_sis_id.split( "/*" );
	
	var h_ls_tipo_sis_nombre 	= $('#h_ls_tipo_sis_nombre').val();
	lista_tipo_sis_nombre 		= h_ls_tipo_sis_nombre.split( "/*" );
	
	nombre_tipo_sis 	= new Array();
	for ( i = 0; i < lista_tipo_sis_id.length - 1; i++ ) {
		nombre_tipo_sis[lista_tipo_sis_id[i]] 	= lista_tipo_sis_nombre[i];
	}
	
	
	// Datos de las Lineas del Metro
	var h_ls_id_linea_met 		= $('#h_ls_id_linea_met').val();
	lista_id_linea_met 			= h_ls_id_linea_met.split( "/*" );
	
	var h_ls_nombre_met 		= $('#h_ls_nombre_met').val();
	lista_nombre_met 			= h_ls_nombre_met.split( "/*" );
	
	var h_ls_color_met 			= $('#h_ls_color_met').val();
	lista_color_met 			= h_ls_color_met.split( "/*" );
	
	nombre_met 					= new Array();
	color_met 					= new Array();
	for ( i = 0; i < lista_id_linea_met.length - 1; i++ ) {
		nombre_met[lista_id_linea_met[i]] 	= lista_nombre_met[i];
		color_met[lista_id_linea_met[i]] 	= lista_color_met[i];
	}
	
	
	// Datos de las Lineas del MetroBus
	var h_ls_id_linea_bus 		= $('#h_ls_id_linea_bus').val();
	lista_id_linea_bus 			= h_ls_id_linea_bus.split( "/*" );
	
	var h_ls_nro_linea_bus 		= $('#h_ls_nro_linea_bus').val();
	lista_nro_linea_bus 		= h_ls_nro_linea_bus.split( "/*" );
	
	var h_ls_id_estacion_bus 	= $('#h_ls_id_estacion_bus').val();
	lista_id_estacion_bus 		= h_ls_id_estacion_bus.split( "/*" );
	
	var h_ls_id_tipo_rut_bus 	= $('#h_ls_id_tipo_rut_bus').val();
	lista_id_tipo_rut_bus 		= h_ls_id_tipo_rut_bus.split( "/*" );
	
	var h_ls_nombre_bus 		= $('#h_ls_nombre_bus').val();
	lista_nombre_bus 			= h_ls_nombre_bus.split( "/*" );
}


// =================================================================================================================
// ====================================== PINTA LOS TRAMOS DEL SISTEMA METRO =======================================
// =================================================================================================================

function pintar_tramo() {
	var points_tramo 	= new Array();
	var color_tramo		= "";
	//alert(lista_coord_x_tra.length);
	for ( var i = 0; i < (lista_coord_x_tra.length-1); i++ ) {
		// Obtenemos los atributos de cada Marcador
		var lat 			= parseFloat( lista_coord_x_tra[i] ).toFixed(8);
		var lng 			= parseFloat( lista_coord_y_tra[i] ).toFixed(8);
		points_tramo.push( new google.maps.LatLng( lat, lng ) );
		
		if ( lista_corte_tra[i] == 1 ) {
			var tramo = new google.maps.Polyline({ path: points_tramo, strokeColor: color_tramo, strokeOpacity: 1.0, strokeWeight: 2 });
			tramo.setMap(map);
			
			points_tramo = new Array();
		} else {
			if ( lista_id_status_tra[i] == "A" ) {
				color_tramo = color_met[lista_id_linea_tra[i]];
			} else if ( lista_id_status_tra[i] == "I" ) {
				color_tramo = "#FFFFFF";
			} else if ( lista_id_status_tra[i] == "C" ) {
				color_tramo = "#AABBCC";
			} else if ( lista_id_status_tra[i] == "M" ) {
				color_tramo = "#000000";
			}
			
		}
	}
}


// =================================================================================================================
// ==================================== PINTA LAS ESTACIONES DEL SISTEMA METRO =====================================
// =================================================================================================================

function pintar_estacion() {
	
	// Inicializamos los InfoBubbles
	var infowindow_div_datos_estacion 		= $('#infowindow_div_datos_estacion').html();
	
	for ( var j = 0; j < lista_id_estacion.length; j++ ) {
		
		if ( lista_id_estacion[j] != "" ) {
			// Obtenemos los atributos de cada Marcador
			var point 	= new google.maps.LatLng( parseFloat(lista_coord_x_est[j]).toFixed(8), parseFloat(lista_coord_y_est[j]).toFixed(8) );
			
			// Creamos el Icono de la Estación
			estacion = "../../publico/imagenes/mapa/" + lista_imagen_est[j] + ".png";
			estacionIcon = new google.maps.MarkerImage( estacion,
				new google.maps.Size( 15, 15 ),
				new google.maps.Point( 0, 0 ),
				new google.maps.Point( 7.5, 7.5 ));
			
			
			// Llenamos la Informacion del InfoWindow
			// Si el Tab es Estación
			html_tab1 	= infowindow_div_datos_estacion;
			html_tab1	= html_tab1.replace("%%element.nombre_est%%",			lista_nombre_est[j]);
			html_tab1	= html_tab1.replace("%%element.nombre_sis%%",			nombre_tipo_sis[lista_id_tipo_sis_est[j]]);
			
			html_tab1	= html_tab1.replace("%%element.nombre_met%%",			lista_nombre_met[lista_id_linea_est[j]]);
			
			if ( lista_id_status_est[j] == "A" ) {
				html_tab1	= html_tab1.replace("%%element.horario_apertura%%",		lista_hora_ape_est[j]);
				html_tab1	= html_tab1.replace("%%element.horario_cierre%%",		lista_hora_cie_est[j]);
				html_tab1	= html_tab1.replace('<tr><td class="titulo_info_tab">Estatus:</td><td>%%element.id_status_est%%</td></tr>',		"");
			} else if ( lista_id_status_est[j] == "I" ) {
				html_tab1	= html_tab1.replace("%%element.id_status_est%%",		"CERRADA");
				html_tab1	= html_tab1.replace('<tr><td class="titulo_info_tab" colspan="2">Horario:</td></tr><tr><td colspan="2">Desde %%element.horario_apertura%% - Hasta %%element.horario_cierre%%</td></tr>',		"");
			} else if ( lista_id_status_est[j] == "C" ) {
				html_tab1	= html_tab1.replace("%%element.id_status_est%%",		"EN CONSTRUCCIÓN");
				html_tab1	= html_tab1.replace('<tr><td class="titulo_info_tab" colspan="2">Horario:</td></tr><tr><td colspan="2">Desde %%element.horario_apertura%% - Hasta %%element.horario_cierre%%</td></tr>',		"");
			} else if ( lista_id_status_est[j] == "M" ) {
				html_tab1	= html_tab1.replace("%%element.id_status_est%%",		"EN MANTENIMIENTO");
				html_tab1	= html_tab1.replace('<tr><td class="titulo_info_tab" colspan="2">Horario:</td></tr><tr><td colspan="2">Desde %%element.horario_apertura%% - Hasta %%element.horario_cierre%%</td></tr>',		"");
			}
			
			if ( lista_transferencia_est[j] == "SI" ) {
				html_tab1 	= html_tab1.replace("%%element.transferencia%%",		"SI");
			} else {
				html_tab1 	= html_tab1.replace("%%element.transferencia%%",		"NO");
			}
			
			if ( lista_observaciones_est[j] != "" ) {
				html_tab1	= html_tab1.replace("%%element.observaciones%%",		lista_observaciones_est[j]);
			} else {
				html_tab1	= html_tab1.replace('<tr><td class="titulo_info_tab" colspan="2">Observaciones:</td></tr><tr><td colspan="2" class="text_justify">%%element.observaciones%%</td></tr>',		"");
				
			}
			
			
			// Configuramos el infoBubble
			var infoBubble = new InfoBubble({
				maxWidth: 300,
				minWidth: 300,
				maxHeight: 200,
				minHeight: 200,
				map: map,
				shadowStyle: 1,
				padding: 5,
				backgroundColor: '#FFFFFF',
				borderRadius: 15,
				arrowSize: 20,
				borderWidth: 2,
				borderColor: '#FF0000',
				disableAutoPan: false,
				hideCloseButton: false,
				arrowPosition: 50,
				arrowStyle: 0
			});
			
			// Agregamos los Tabs al InfoWindow
			infoBubble.addTab(lista_nombre_est[j], 	html_tab1);
			
			
			// Creamos el Marcador
			var marker = new google.maps.Marker({position: point, title: lista_nombre_est[j], icon: estacionIcon, infoBubblez: infoBubble});
			
			// Creamos el Evento
			google.maps.event.addListener(marker, "click", function () {
				if (!(this.infoBubblez).isOpen()) {
					if ( infoBubbleTurnob != null ) {
						infoBubbleTurnob.close();	
					}
					(this.infoBubblez).open(map, this);
					infoBubbleTurnob = this.infoBubblez;
				}
			});
			
			// Agregamos el Marcador al Mapa
			marker.setMap(map);
		}
	}
}